{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {
    "_cell_guid": "0b9ffbb2-8d33-eb0c-5a42-0733bdc3b74b",
    "_uuid": "e14f65723f5ac826104e861c45e58525740d8b2a"
   },
   "source": [
    "# Logistic 回归—— Pima Indians Diabetes Data Set\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "在 Pima Indians Diabetes Data Set（皮马印第安人糖尿病数据集）进行分类器练习."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 导入必要的工具包"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "_cell_guid": "2ba3154a-c2aa-3158-1984-63ad2c0c786a",
    "_uuid": "5eb696b95780825e94ddb49787f9fa339fc3833b"
   },
   "outputs": [],
   "source": [
    "# 首先 import 必要的模块\n",
    "import pandas as pd \n",
    "import numpy as np\n",
    "\n",
    "from sklearn.model_selection import GridSearchCV\n",
    "\n",
    "# 评价指标为logloss\n",
    "from sklearn.metrics import log_loss \n",
    "\n",
    "# 评价指标为logloss\n",
    "# from sklearn.metrics import log_loss  \n",
    "# SVM 并不能直接输出各类的概率，所以在这个例子中我们用正确率作为模型预测性能的度量\n",
    "from sklearn.metrics import accuracy_score\n",
    "\n",
    "\n",
    "from matplotlib import pyplot\n",
    "import matplotlib.pyplot as plt # 可视化\n",
    "import seaborn as sns\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 读取数据 & 数据探索 & 特征工程"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "_cell_guid": "21fa35be-878b-b4f2-ef6e-68dc070b8bfa",
    "_uuid": "73aee228226be55c0c8a6e4fcbf818c56cd94926"
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Pregnancies</th>\n",
       "      <th>Glucose</th>\n",
       "      <th>BloodPressure</th>\n",
       "      <th>SkinThickness</th>\n",
       "      <th>Insulin</th>\n",
       "      <th>BMI</th>\n",
       "      <th>DiabetesPedigreeFunction</th>\n",
       "      <th>Age</th>\n",
       "      <th>Outcome</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>6</td>\n",
       "      <td>148</td>\n",
       "      <td>72</td>\n",
       "      <td>35</td>\n",
       "      <td>0</td>\n",
       "      <td>33.6</td>\n",
       "      <td>0.627</td>\n",
       "      <td>50</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>85</td>\n",
       "      <td>66</td>\n",
       "      <td>29</td>\n",
       "      <td>0</td>\n",
       "      <td>26.6</td>\n",
       "      <td>0.351</td>\n",
       "      <td>31</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>8</td>\n",
       "      <td>183</td>\n",
       "      <td>64</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>23.3</td>\n",
       "      <td>0.672</td>\n",
       "      <td>32</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1</td>\n",
       "      <td>89</td>\n",
       "      <td>66</td>\n",
       "      <td>23</td>\n",
       "      <td>94</td>\n",
       "      <td>28.1</td>\n",
       "      <td>0.167</td>\n",
       "      <td>21</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0</td>\n",
       "      <td>137</td>\n",
       "      <td>40</td>\n",
       "      <td>35</td>\n",
       "      <td>168</td>\n",
       "      <td>43.1</td>\n",
       "      <td>2.288</td>\n",
       "      <td>33</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   Pregnancies  Glucose  BloodPressure  SkinThickness  Insulin   BMI  \\\n",
       "0            6      148             72             35        0  33.6   \n",
       "1            1       85             66             29        0  26.6   \n",
       "2            8      183             64              0        0  23.3   \n",
       "3            1       89             66             23       94  28.1   \n",
       "4            0      137             40             35      168  43.1   \n",
       "\n",
       "   DiabetesPedigreeFunction  Age  Outcome  \n",
       "0                     0.627   50        1  \n",
       "1                     0.351   31        0  \n",
       "2                     0.672   32        1  \n",
       "3                     0.167   21        0  \n",
       "4                     2.288   33        1  "
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 读入数据\n",
    "train = pd.read_csv(\"diabetes.csv\")\n",
    "train.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Pregnancies</th>\n",
       "      <th>Glucose</th>\n",
       "      <th>BloodPressure</th>\n",
       "      <th>SkinThickness</th>\n",
       "      <th>Insulin</th>\n",
       "      <th>BMI</th>\n",
       "      <th>DiabetesPedigreeFunction</th>\n",
       "      <th>Age</th>\n",
       "      <th>Outcome</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>count</th>\n",
       "      <td>768.000000</td>\n",
       "      <td>768.000000</td>\n",
       "      <td>768.000000</td>\n",
       "      <td>768.000000</td>\n",
       "      <td>768.000000</td>\n",
       "      <td>768.000000</td>\n",
       "      <td>768.000000</td>\n",
       "      <td>768.000000</td>\n",
       "      <td>768.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>mean</th>\n",
       "      <td>3.845052</td>\n",
       "      <td>120.894531</td>\n",
       "      <td>69.105469</td>\n",
       "      <td>20.536458</td>\n",
       "      <td>79.799479</td>\n",
       "      <td>31.992578</td>\n",
       "      <td>0.471876</td>\n",
       "      <td>33.240885</td>\n",
       "      <td>0.348958</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>std</th>\n",
       "      <td>3.369578</td>\n",
       "      <td>31.972618</td>\n",
       "      <td>19.355807</td>\n",
       "      <td>15.952218</td>\n",
       "      <td>115.244002</td>\n",
       "      <td>7.884160</td>\n",
       "      <td>0.331329</td>\n",
       "      <td>11.760232</td>\n",
       "      <td>0.476951</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>min</th>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.078000</td>\n",
       "      <td>21.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25%</th>\n",
       "      <td>1.000000</td>\n",
       "      <td>99.000000</td>\n",
       "      <td>62.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>27.300000</td>\n",
       "      <td>0.243750</td>\n",
       "      <td>24.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50%</th>\n",
       "      <td>3.000000</td>\n",
       "      <td>117.000000</td>\n",
       "      <td>72.000000</td>\n",
       "      <td>23.000000</td>\n",
       "      <td>30.500000</td>\n",
       "      <td>32.000000</td>\n",
       "      <td>0.372500</td>\n",
       "      <td>29.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75%</th>\n",
       "      <td>6.000000</td>\n",
       "      <td>140.250000</td>\n",
       "      <td>80.000000</td>\n",
       "      <td>32.000000</td>\n",
       "      <td>127.250000</td>\n",
       "      <td>36.600000</td>\n",
       "      <td>0.626250</td>\n",
       "      <td>41.000000</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>max</th>\n",
       "      <td>17.000000</td>\n",
       "      <td>199.000000</td>\n",
       "      <td>122.000000</td>\n",
       "      <td>99.000000</td>\n",
       "      <td>846.000000</td>\n",
       "      <td>67.100000</td>\n",
       "      <td>2.420000</td>\n",
       "      <td>81.000000</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "       Pregnancies     Glucose  BloodPressure  SkinThickness     Insulin  \\\n",
       "count   768.000000  768.000000     768.000000     768.000000  768.000000   \n",
       "mean      3.845052  120.894531      69.105469      20.536458   79.799479   \n",
       "std       3.369578   31.972618      19.355807      15.952218  115.244002   \n",
       "min       0.000000    0.000000       0.000000       0.000000    0.000000   \n",
       "25%       1.000000   99.000000      62.000000       0.000000    0.000000   \n",
       "50%       3.000000  117.000000      72.000000      23.000000   30.500000   \n",
       "75%       6.000000  140.250000      80.000000      32.000000  127.250000   \n",
       "max      17.000000  199.000000     122.000000      99.000000  846.000000   \n",
       "\n",
       "              BMI  DiabetesPedigreeFunction         Age     Outcome  \n",
       "count  768.000000                768.000000  768.000000  768.000000  \n",
       "mean    31.992578                  0.471876   33.240885    0.348958  \n",
       "std      7.884160                  0.331329   11.760232    0.476951  \n",
       "min      0.000000                  0.078000   21.000000    0.000000  \n",
       "25%     27.300000                  0.243750   24.000000    0.000000  \n",
       "50%     32.000000                  0.372500   29.000000    0.000000  \n",
       "75%     36.600000                  0.626250   41.000000    1.000000  \n",
       "max     67.100000                  2.420000   81.000000    1.000000  "
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "## 各属性的统计特性\n",
    "train.describe()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "上述表格中，以下特征有最小值为零（0）的列：\n",
    "\n",
    "1：Glucose 血浆葡萄糖浓度\n",
    "\n",
    "2：BloodPressure 舒张压\n",
    "\n",
    "3：SkinThickness 组织褶厚度\n",
    "\n",
    "4：Insulin 血清胰岛素\n",
    "\n",
    "5：BMI 体重指数\n",
    "\n",
    "但这些数据为零并不合理，说明上述特征中有无效值或缺失值。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "** 计算有缺失值的特征中缺失值的数量 ** \n",
    "\n",
    "标记相应的的 DataFrame 的子集中的所有零值为真，然后计算每列中真值的数量。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Glucose            5\n",
      "BloodPressure     35\n",
      "SkinThickness    227\n",
      "Insulin          374\n",
      "BMI               11\n",
      "dtype: int64\n"
     ]
    }
   ],
   "source": [
    "print((train[['Glucose','BloodPressure','SkinThickness','Insulin','BMI']] == 0).sum())"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "以上统计数据表明：Glucose, BloodPressure 和 BMI 列只有少数零值，而 SkinThickness 和 Insulin 几乎一半都为零值。\n",
    "\n",
    "因此，不同特征（列）可能需要不同的策略来处理。\n",
    "\n",
    "在这次的作业中，我选择删除缺失值的行的处理方式。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "** 删除包含缺失值的行 **"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(392, 9)\n"
     ]
    }
   ],
   "source": [
    "# 将相应的特征为 0 的值标记为 NaN\n",
    "train[['Glucose','BloodPressure','SkinThickness','Insulin','BMI']] = train[['Glucose','BloodPressure','SkinThickness','Insulin','BMI']].replace(0, np.NaN)\n",
    "\n",
    "# 删除有缺失值的行\n",
    "train.dropna(inplace = True)\n",
    "\n",
    "# 查看删除缺失值后数据的 size\n",
    "print(train.shape)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "经过以上的操作，原始数据集中的 768 条数据被减到了 392 条，所有都包含 NaN 的行都被删除。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "Int64Index: 392 entries, 3 to 765\n",
      "Data columns (total 9 columns):\n",
      "Pregnancies                 392 non-null int64\n",
      "Glucose                     392 non-null float64\n",
      "BloodPressure               392 non-null float64\n",
      "SkinThickness               392 non-null float64\n",
      "Insulin                     392 non-null float64\n",
      "BMI                         392 non-null float64\n",
      "DiabetesPedigreeFunction    392 non-null float64\n",
      "Age                         392 non-null int64\n",
      "Outcome                     392 non-null int64\n",
      "dtypes: float64(6), int64(3)\n",
      "memory usage: 30.6 KB\n"
     ]
    }
   ],
   "source": [
    "train.info()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[<matplotlib.axes._subplots.AxesSubplot object at 0x1a0ae7d2e8>,\n",
       "        <matplotlib.axes._subplots.AxesSubplot object at 0x1a163d0518>,\n",
       "        <matplotlib.axes._subplots.AxesSubplot object at 0x1a163fa828>],\n",
       "       [<matplotlib.axes._subplots.AxesSubplot object at 0x1a16423b38>,\n",
       "        <matplotlib.axes._subplots.AxesSubplot object at 0x1a1644be48>,\n",
       "        <matplotlib.axes._subplots.AxesSubplot object at 0x1a1644be80>],\n",
       "       [<matplotlib.axes._subplots.AxesSubplot object at 0x1a164aa470>,\n",
       "        <matplotlib.axes._subplots.AxesSubplot object at 0x1a164d3780>,\n",
       "        <matplotlib.axes._subplots.AxesSubplot object at 0x1a164fba90>]],\n",
       "      dtype=object)"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1152x1008 with 9 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "train.hist(figsize=(16,14)) # 查看每个特征的数据分布；"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "corr = train[train.columns].corr() # 计算变量的相关系数，得到一个N * N的矩阵"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x1a16606208>"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA2gAAAMpCAYAAABxEhD0AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAIABJREFUeJzs3Xd4VMXbxvHv7CY06TWhSAuK9K50QZoIiIIVKQqKKBZAQBBBRcEKFhTB8lPQ165IlY4U6V1UBOkpQBIgoEDI7rx/7BLYEIpKcg54f64rF7vnPOfsM8NsmZ05s8Zai4iIiIiIiDjP43QCIiIiIiIiEqAOmoiIiIiIiEuogyYiIiIiIuIS6qCJiIiIiIi4hDpoIiIiIiIiLqEOmoiIiIiIiEuogyYiIiIiIvIPGGM+NMbsM8b8fJb9xhjzpjFmqzFmgzGmxvnOqQ6aiIiIiIjIP/MR0Ooc+28EygX/HgDGnu+E6qCJiIiIiIj8A9bahUDiOUJuBibYgGVAXmNM5LnOqQ6aiIiIiIhIxigG7D7t/p7gtrMKy9B05D/jRPw263QObnNXzcedTsF1suB1OgVX2nAs1ukUXCfF+pxOwZW2HoxxOgXXyRGe1ekUXCf63vJOp+BKg6bmcjoFVxqz4wvjdA5n4/TnyyyFyvYkMC3xpPHW2vF/8zTp1e85y6UOmoiIiIiISBrBztjf7ZCltQcocdr94sA5v23TFEcREREREZGMMRnoElzN8TrgkLX2nFNnNIImIiIiIiLu43f/dHdjzGfA9UBBY8weYBgQDmCtfReYDrQGtgJ/Afee75zqoImIiIiIiPwD1tq7zrPfAg//nXOqgyYiIiIiIu5j/U5n4AhdgyYiIiIiIuIS6qCJiIiIiIi4hKY4ioiIiIiI+/g1xVFEREREREQcpA6aiIiIiIiIS2iKo4iIiIiIuI7VKo4iIiIiIiLiJI2giYiIiIiI+2iREBEREREREXGSOmgiIiIiIiIuoSmOIiIiIiLiPlokRERERERERJykETQREREREXEfv8/pDByhETQRERERERGXUAdNRERERETEJTTFUURERERE3EeLhIiIiIiIiIiTNIImIiIiIiLu49cImoiIiIiIiDhIHTQRERERERGX0BRHERERERFxHatFQkRERERERMRJGkETERERERH30SIhIiIiIiIi4iR10ERERERERFxCUxzlsjBkxCgWLllB/nx5mfTJu06n45hqjWtw77AeeLxe5n4+i0ljvwnZ36bHzdxwZ3P8KX6SEg/xdv83iY/e71C2GadK4+p0GdYdj9fD/M/nMGXstyH7W/dox/V3NsOf4iMpMYnx/cek1sPAj58mqvrVbF71K6/e94IT6V809Ztcx5PP98Hr9fDNp5P54K2JIfvDs4QzcswwKlS5moMHknjigSHE7I4lLDyMYa88ScVq5bF+y4tDRrPypzUAvPvZaAoVKYjX62XN8nU8/+Sr+C+xKSgNmtTlqRf64fF6+PqT73nvrY9D9odnCeelMc9SsWp5DiYeou8Dg4neHUubDq3o/nDn1LirK0Rxa7PO/Pbz79x4c3Me7HMvHo+XH+cs5tXn3srsYv1ro0c9x42tmvLX0aN0796Htet+PiOmRvXKfPDBaLJny8aMH+bRp+9QAF4aOYSb2jQnOTmZbdt20r1HXw4dSqJkyeL8vGEBm3/fBsDy5Wt4uPeTmVquv6NZ80a89PJQvF4PH3/8JaNfC30/yZIlC+Pee5Xq1SuRmHiQbl0eYdeuaAD6PtGLLl1uw+fzM6D/s8yds4iocqX5aMKptlCqVAlGPP8677z9PwB6PtiFB3p2ISUlhZkz5zN0yEuZV9iLwHtNTbJ17AkeDyd+mkny7K/OiAmr3pAsrTsBFn/0do599DIAWW++D2+l2mAMvt/WcvzrcZmcfca5pnFVOg7thsfr4acv5jF77Pch+5t2v4m6dzbFn+LjSGISnwx4lwPR8QDkK1qAu1/sSb6iBbHWMvbeF0ncc/m9T18wLRIif5cxxmeMWWeM+dkY85UxJofTOV0oY8xPTudwMbVv3Zx3Rz3vdBqO8ng89Bjekxe6PkufZg/ToF0jipcrERKzfdM2BrbpS79Wj7J0+k90HtTNmWQzkPF4uHf4A7zcdTj9mz1KvXYNKFaueEjMjk3bGNLmCZ5s1YcV03/irkFdUvdNHT+JsX1ez+y0LzqPx8OQF5+g1919aNfwLlrf0oIyV5UKibn17nYkHUyi9XW3MXHcZ/R9+mEAOt5zc2D/9fdw/+2P8sQzj2KMAaDf/U/RoWln2je+m3wF8tGyXdNMLde/5fF4GPrSAO6/6zHaNLidm25tQdmrSofEdOx0M0mHkmh57a18PO7/6Pf0IwBM/eYHbmnaiVuadmLgw0OJ3h3Lbz//Tt58eeg/7FG6dXiIto3uoGCh/FzXsLYTxfvHbmzVlHJRpSlfoQG9eg3k7TEj0417e8xIevUaSPkKDSgXVZpWLZsAMGfuQqpWa0qNms3ZsmUbTw7snXrMH9t2Uqt2C2rVbuHqzpnH4+G1Uc/S4ZZ7qV2zJR1va8vV5aNCYrp0vZ2DB5OoVqUpb4/5kGeHDwTg6vJRdOjYhjq1WnFr+26MGv0cHo+HrVu206BuGxrUbUOj+u04evQYUybPBKBho+to3aY5da9tzbW1W/HmG+9nepn/FeMh2+0P8dc7Q/nz+QcJq9kYT0Toe44pVJQsLW7nr1FP8NcLvVI7YZ7S1+AtU4G/RjzMXy88hLfkVXjLVXaiFBed8Rhuf+4+3uk2kueb96Vmu/pERBULidn9yw5ebjuIkTcOYO2M5bQf1Cl1X5dRDzN3/BSeb9aXV24ezOH4Q5ldBHEBddD+naPW2mrW2kpAMvDg6TtNgCvr2Fpbz+kcLqZa1SqTJ3cup9NwVFS1csTtiGXf7r2knEhhyZRF1G5+bUjMpqUbST6WDMCWtZspEFnQiVQzVFS1cuwN1oPvRApLpyymZvM6ITG/LP35tHr4nfyRBVL3bVqykaN/Hs3UnDNC5RoV2LV9D3t2xpByIoUZk2bTtFWjkJimrRry/ZfTAZg1ZT7XNqgFQNmrSrN80SoAEuMPcDjpMBWrXQPAn0f+AiAszEt4lnCszawSXRxValRk1/bd7NkZzYkTKUz/bjY3tGocEnNDq0ZM+mIaADOnzKNuOp2tm25pybRvAx+0i5csxo5tuziQcBCAnxauoEWbS6vj2rZtSyZ++jUAy1esIU/ePEREFA6JiYgoTK7cuVi2fDUAEz/9mnbtWgEwe85CfD4fAMuWr6FYschMzP7iqFWrKtu27WTHjt2cOHGCb76eyk1tmofE3NSmGZ99GpiZMOm7GVx/fb3g9uZ88/VUkpOT2blzD9u27aRWraohx17fpB7bt+1k9+4YALr36MTo194lOTnwWhS/PyGji3hReUpdhT8+BpsQB74UUtYsJKxK3ZCYLPVacWLhVDh6BAB75GRnw0J4OISFQVg4eMOwSQczuQQZo1S1KOJ37iVh9z58J3ysmfITVVqEvoZsWbqJE8H3oB1rt5A3IvAeFBFVDI/Xy2+LNwKQ/Nfx1Lj/LL/P2T+HuLLzcIlaBEQZY0oZY341xrwDrAFKGGNaGGOWGmPWBEfacgIYY1obY34zxiw2xrxpjJka3P6MMeZDY8wCY8w2Y8yjJx/EGDPJGLPaGLPJGPPAaduPGGNeMMasN8YsM8YUCW4vYoz5Lrh9vTGm3sn4047tb4xZaYzZYIx5NrjtCmPMtOAxPxtj7siEOpR/IX9EAeJj41PvJ8TGkz+iwFnjm97RnLULVmdGapkqX0R+Ek6rh8TYhHPWQ5M7mrF+wZrMSC1TFY4oRFzMvtT7e2P2UTiiUGhMZCHiovcC4PP5OHL4CHnz52HzL1to0qohXq+XYldGUqFKeSKKFkk9btznr/Pjphn8eeRPZk2ZlzkFukiKRBQiNlhmgLjYvRSJTFMvEYVTY3w+H4eD9XK6G9s3Z9p3swDYtX03ZaJKUqxEJF6vl2Y3Xk/kafV1KShWNII9wY4DQPSeWIoVjTgjJnpP7DljAO7tdic/zJyfer90qStZuWIm8+Z8TYP6dc6Id4vIohHsOa18MdGxFI0skiamSGqMz+cjKekw+Qvko2hkEaL3nFZ/0XFEpqmbDh3b8vVXU1LvR5UrTb16tZm34Fum//AZNWpUyYhiZRhPngL4D5x6rfUfiMfkCX2tNYWL4SlcjBx9XiVHv1F4r6kZiN3+G74tG8j5wifkHPEJKb+uxr93d6bmn1HyFMnPgZhTne0DsQnkKZLvrPF1b2/CLwvWAVC4TCRHk/6kx7v9GDjtRdoP6oTxmAzPWdxHHbSLwBgTBtwIbAxuuhqYYK2tDvwJDAGaWWtrAKuAvsaYbMA44EZrbQOgUJrTlgdaAnWAYcaY8OD2+6y1NYFawKPGmJOvhlcAy6y1VYGFwP3B7W8CPwa31wA2pcm9BVAu+DjVgJrGmEZAKyDGWls1OEL4wz+vIckMhjNfxO1Zhjca3nI9ZStH8f24b9Pdfyn7O/VQ/5bGlK5clqnjJmV0Wpnu5JTE06WthbPV1Xf/N5W9sfv4Ytb/GDi8D+tWbsTnS0mN6Xnn4zSp0oYsWbKkjrpdMtKrlzTtI726O73yqtSoyLG/jrHltz8ASDp0mGcHvMSo8SP4dMp4onfHknJafV0K0m0vF1AvNk2rGvTko6SkpPB//xd4bYmN3UfpsnWoXaclT/R/lokT3iZXrpwXMfOLJ93/9rR1kM5zBmvPW3/h4eG0bn0D3303I3VbWJiXvHlz0/T6W3n6qZF8NPESu24xvQpL0x6M14spXJS/3hjI0Y9eItvdj0H2KzAFI/EUKcGRIV048lRnwq6qirdspczJO4Od7/XjdLXbN+DKKmWZO34yAB6vl7K1r+G7FybySrvBFLyyCNd1vD7jkhXXUgft38lujFlHoNO1C/gguH2ntXZZ8PZ1QAVgSTC2K1CSQAdsm7V2ezDuszTnnmatPW6tjQf2ASe/xnvUGLMeWAaUINC5gsAUy6nB26uBUsHbTYGxANZan7U27WTmFsG/tQRG/MoHz7kRaGaMeckY0zCd4zDGPGCMWWWMWfX+hLTpS2ZLiIun4GlTFgtEFuTA3sQz4irXr0qH3rfxYo/nSUm+tD5EXojEuISQqZv5IwukWw+V6lehfe+OvNZj5GVZD3tj9xFR9NQUtSJFC7M/bv+ZMcUCLy1er5ecuXJy6EASPp+Pl4e+QccbuvBo1wHkzpOTndtCv91OPp7M/JmLaNKqYcYX5iLaG7uPyGKnRkUiIouwLy4+Tcze1Biv10uuXDk5eODUS2Dr9i2Y9t3MkGPmz1rEHTfey52tu7N9684z6suNej3YlVUrZ7Fq5SxiYuMoXqJo6r5ixSOJid0bEr8nOpZixSNDY2JOxXTufBs3tW5G5y6nrj9LTk4mMfEAAGvWbmTbth1cVa5MRhXpX4mJjqP4aeUrWiyS2Lh9oTExp2K8Xi+5c+ciMfEg0TFxFCt+Wv0ViyDutPpr3qIx69dvYv++U20tJjqOycHr0Vav3oD1+ylQMH+GlC0j+A/G48l36rXWk68g9lDiGTEpG5aB34dN2It/3x48hYoSVrUevh2bIfkYJB8jZdMqvKXLZ3YRMsTBuATyFT01kpgvsgCH9h04I+7q+pVp2ftWxvV4OfU96GBcInt+2U7C7n34fX7Wz1pJiUqlzzj2P8X6nf1ziDpo/87Ja9CqWWsfsdaenCj852kxBph9WlwFa2334PZzOX7abR8QZoy5HmgG1A2OiK0FsgVjTthTX9f5uPAVOg0w8rT8oqy1H1hrfwdqEuiojTTGDE17oLV2vLW2lrW2Vo8ud13gw0lG2bp+C5Gli1K4RBHCwsOo37YhK2cvD4kpXbEMPUc+xIvdnycp4fK88PiP9VuIKB1JoRKF8YaHUbdtA1bPXhkSU7JiabqP7MVr3UdctvXw89pfubJMCYpdGUlYeBg3tm/O/JmLQmLmz1zEzbe3BqBF2yYsXxy47ixb9qxkzxF4aanbqA4pKT62/b6D7DmyU7Bw4IOH1+ulUbN6bN+6MxNL9e9tXPsLJctcSbErixIeHkbrW5ozb+bCkJh5MxfR/o6bAGjZtinLFp9qP8YYWrW7gWmTZocck79gYApT7jy5uOvejnz9SeiqbW409t2PUxfvmDx5Jp07dQTg2jo1SDqURFyazklc3D4OHz7CtXVqANC5U0emTAl0MFq2uJ7+TzxE+1u7cfTosdRjChbMj8cT+KhRuvSVREWVZtv2XZlRvL9t9eoNlClbipIlixMeHk6Hjm2YPm1OSMz0aXO5q1MHANrfciM//rg0uH0OHToGRpVLlixOmbKlWLVqfepxt93Wlq9Om94IMHXKbBo3DlyzFRVVmvAs4STEn/llklv5d/6Op1BRTIEi4A0jrEajQGfsNCnrlxJ2VWDqprkiN57CxfAnxGEP7McbVQk8HvB48ZarjC/One3i79q5/g8KlYqgQPFCeMO91Ghbjw2zV4XEFK9YijtH9GBcj5c5kpB02rFbyZ4nJznzB66pv7peJeK27MnU/MUdtMx+xlsGvG2MibLWbg2u9Fgc+A0oY4wpZa3dAVzINV55gAPW2r+MMeUJjM6dz1ygF/C6McYLXGGtTTpt/0xguDHmU2vtEWNMMeAEgbaRaK39JHi9WrcLK64z+g97kZVrN3DwYBI3tL+Hh7p3pkPblk6nlan8Pj/vDx3HkAnP4PF6mPflHPZs2c0dfe/mjw1bWTVnBZ0HdyNbjuz0eyew8lh8zH5e6nFpLyWflt/n56Oh7/HkhGF4vB4WfDmX6C276dj3LrZt2MqaOSvpNLgr2XJk49F3+gOQELOf13oEVq0b+tULFC1bjGxXZOOtZe/x3oC32bBwnZNF+kd8Ph8jBr3KuM/fwOv18N1nU/lj83YeHnA/m9b/xoKZi/j2/6Ywcswwpi/7ikMHk+jf82kA8hfMz7jPX8f6LXvj9jOo97MA5LgiO2MmvEKWrFnweDwsX7KaLz/+zsli/m0+n4/hT77MB1+8icfr5Zv/m8zWzdt4ZGBPfl73K/NnLuTrT7/n5befZebybzl0IIm+PZ9KPb523erExexjz87okPM+9Xw/rq4YmNDwzmvvs2PbpfVhc/qMubRq1ZTNvy7hr6NH6dGjb+q+VStnUat2CwB69x6Uusz+DzPnM+OHwDWIb7z+PFmzZuWHGZ8Dp5bTb9jwOp4Z9gQpKT58Ph8P9x7EgQPuXAzC5/PRv98zfPf9x3i9HiZO+Irfft3CU0MeZ82ajcyYPpcJH3/B+PdHsW7DPA4cOMS9XQOXiP/26xa++2YaK1fPJCXFxxN9h6X+/ET27Nlo0rQBjz06JOTxJk74infefYllK2eQnHyCBx/on+ll/lf8fo59OZYcDz8PxsOJZbPwx+0iy0334Nu1Bd/G5fh+XU3YNTXI8dS7YP0cn/QB/HmYlLWL8V5VhRyD3wELvl9X4/t5hdMluij8Pj9fDv2QhycMxng9LPtyAXFb9nBTn9vYtXEbG+espv2ge8iaIxvd3+kDwIHoeMbd/wrWb5n0wkQe+fRpjDHs+nkbSz6f63CJxAnmbNdmyPkZY45Ya3Om2VYKmBq8buvktqbAS0DW4KYh1trJxpi2wCtAPLACKGKt7WSMeQY4Yq19NXj8z0AbIBaYBBQDNhO4bu0Za+2C03MxxnQE2lhruwUXCxkPlCEwstbLWrs0TfxjQI9gbkeAe4CoYG5+Ah22Xtba0K+ATnMifpsaUhp31Xzc6RRcJwtep1NwpQ3HYs8f9B+TYp1bPcvNth6MOX/Qf0yO8KznD/qPib738pgueLENmvrfXu35bMbs+MK1K5Ec3zTX0c+XWSve4EjdaATtX0jbOQtu2wFUSrNtHpDej+LMt9aWN4ErSt8mcC0b1tpn0hx/+vluPF8u1tqvga+Dt/cCN58n/g3gjTQhfxAYXRMRERERkUyiDpqz7jfGdAWyELiebJzD+YiIiIiIuIODC3U4SR00B1lrRwOjnc5DRERERETcQas4ioiIiIiIuIRG0ERERERExH38/80pjhpBExERERERcQmNoImIiIiIiOvY/+hPrmgETURERERExCXUQRMREREREXEJTXEUERERERH3+Y/+DppG0ERERERERFxCI2giIiIiIuI+WmZfREREREREnKQOmoiIiIiIiEtoiqOIiIiIiLiPFgkRERERERERJ2kETURERERE3MfvczoDR2gETURERERExCXUQRMREREREXEJTXEUERERERH30SIhIiIiIiIi4iR10ERERERERFxCUxxFRERERMR9/JriKCIiIiIiIg7SCJqIiIiIiLiPFgkRERERERERJ6mDJiIiIiIi4hKa4igiIiIiIu6jRUJERERERETESRpBExERERER99EImoiIiIiIiDhJHTQRERERERGX0BRHuSjuqvm40ym4zmerX3c6BdfpUrOv0ym4UvlshZ1OwXXeKnHY6RRcqe/u2k6n4DrRKWoraX04Ob/TKbjSQ+EHnE5B/iZrfU6n4AiNoImIiIiIiLiERtBERERERMR9tEiIiIiIiIiIOEkdNBEREREREZfQFEcREREREXEfqymOIiIiIiIi4iCNoImIiIiIiPtokRARERERERFxkjpoIiIiIiIiLqEpjiIiIiIi4j5aJEREREREREScpBE0ERERERFxHy0SIiIiIiIiIk5SB01ERERERMQlNMVRRERERETcR4uEiIiIiIiIiJPUQRMREREREXEJTXEUERERERH30SqOIiIiIiIi4iSNoImIiIiIiPtoBE1EREREREScpA6aiIiIiIiIS2iKo4iIiIiIuI9+B01EREREREScpBE0ERERERFxHy0SIiIiIiIiIk5SB01ERERERMQlNMVRRERERETcR4uEiIiIiIiIiJM0giYiIiIiIu6jRUJERERERETESRpBk0tStcY1uHdYDzxeL3M/n8Wksd+E7G/T42ZuuLM5/hQ/SYmHeLv/m8RH73coW+cMGTGKhUtWkD9fXiZ98q7T6WSaqo2r02VYDzxeD/M/n83ksd+G7G/dox1N7myOP8VHUmIS4/q/ldo+nvx4KFHVr2bzql945b4XnEg/U+g5FJD12trkfqw3eLz8NXUaf37yWcj+7De2JNdDD+KPjwfgz2++4+jU6QDk6tWTrPWuwxjD8ZWrSXrjrUzPPyPo+ZO+OtfX5tHnHsbj8TDts+l8+vbnIfurXluZR559mDLXlOHZh57nx2kLQ/bnyJmDiQv+x6IfFvP6kMujrZRsXIXGz3TGeD1s+nwBq96ZErK/8j1NqdKlOdbn58Rfx5j75AckbolJ3Z+raAHumfsSy0d/y5rx0zM7/QxzRaOaRDz9AMbr4cAXs0gY91XI/jwdmlFk4H2k7E0AIHHiFA5+OYus15Qh8rmH8OTMAX4/8e98QdK0RU4UQRymDprLGGOKAKOB64ADQDLwcvD2E9baNg6m5woej4cew3vyXKehJMYl8OLk11g1ZwV7tuxOjdm+aRsD2/Ql+VgyLe65kc6D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Pi1t7K1ptxGY/jg4+CciIiIiIplI16CJiIiIiIi4hEbQRERERETEfRxcqMNJGkETERERERFxCXXQREREREREXEJTHEVERERExH00xVFEREREREScpBE0ERERERFxH6sRNBEREREREXGQOmgiIiIiIiIuoQ6aiIiIiIi4j9/v7N8FMMa0MsZsNsZsNcY8mc7+K40x840xa40xG4wxrc93TnXQRERERERE/iZjjBd4G7gRqADcZYypkCZsCPCltbY6cCfwzvnOq0VCRERERETEfax1OoPzqQNstdZuAzDGfA7cDPxyWowFcgdv5wFizndSddBERERERET+vmLA7tPu7wGuTRPzDDDLGPMIcAXQ7Hwn1RRHERERERGRNIwxDxhjVp3290DakHQOSzvsdxfwkbW2ONAamGiMOWcfTCNoIiIiIiLiPhe4UEdGsdaOB8afI2QPUOK0+8U5cwpjd6BV8HxLjTHZgILAvrOdVCNoIiIiIiIif99KoJwxprQxJguBRUAmp4nZBdwAYIy5BsgG7D/XSTWCJiIiIiIi7uPwCNr5WGtTjDG9gZmAF/jQWrvJGPMcsMpaOxnoB7xnjOlDYPpjN2vPvfqJOmgiIiIiIiL/gLV2OjA9zbahp93+Baj/d86pKY4iIiIiIiIuoRE0ERERERFxH+vuKY4ZRSNoIiIiIiIiLqERNBERERERcR3rP+daGpctjaCJiIiIiIi4hDpoIiIiIiIiLqEpjiIiIiIi4j4u/x20jKIRNBEREREREZfQCJqIiIiIiLiPltkXERERERERJ6mDJiIiIiIi4hKa4igiIiIiIu7zH/0dNHXQ5KLIgtfpFFynS82+TqfgOhNWj3I6BVfqWWuA0ym4Tsutx5xOwZVuzVrU6RRc55v4VU6n4DrXR0Y4nYIrDUnRZ5X0fOt0AnIGTXEUERERERFxCY2giYiIiIiI++h30ERERERERMRJGkETERERERH30QiaiIiIiIiIOEkdNBEREREREZfQFEcREREREXEf+9/8HTSNoImIiIiIiLiERtBERERERMR9tEiIiIiIiIiIOEkdNBEREREREZfQFEcREREREXEfvxYJEREREREREQdpBE1ERERERNzHapEQERERERERcZA6aCIiIiIiIi6hKY4iIiIiIuI+WiREREREREREnKQRNBERERERcR3r1yIhIiIiIiIi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jaCJiIiIiIi4hDpoIiIiIiIiLqEpjiIiIiIi4j5aJEREREREREScpA6aiIiIiIiIS2iKo4iIiIiIuI7VFEcRERERERFxkkbQRERERETEfTSCJiIiIiIiIk5SB01ERERERMQlNMVRRERERETcx+93OgNHaARNRERERETEJTSCJiIiIiIi7qNFQkRERERERMRJ6qCJiIiIiIi4hKY4ioiIiIiI+2iKo4iIiIiIiDhJI2giIiIiIuI61moETURERERERBykDpqIiIiIiIhLaIqjiIiIiIi4jxYJERERERERESdpBE1ERERERNxHI2giIiIiIiLiJHXQREREREREXEJTHOWi2HAs1ukUXKd8tsJOp+A6PWsNcDoFVxq36mWnU3CdW2s86nQKrtS3xX6nU3Cdn36o5HQKrrPSl+h0Cq5U1pvb6RTkb7Ka4igiIiIiIiJO0giaiIiIiIi4j0bQRERERERExEnqoImIiIiIiLiEpjiKiIiIiIj7+J1OwBkaQRMREREREXEJddBERERERERcQlMcRURERETEdfQ7aCIiIiIiIuIojaCJiIiIiIj7aARNREREREREnKQOmoiIiIiIiEtoiqOIiIiIiLiPfgdNRET+n737Do+iavs4/j27CU1qSEhCE5CmVJEmKCAdH0DsKFUFUcEGooIUFQTsHSn6PPZeAWlBBZGOVFGadNITQkDBkN3z/pEYsiEoviaZCfw+15WL7Mw9k3uGmdk9c585KyIiIuIkVdBERERERMR1NMy+iIiIiIiIOEoNNBEREREREZdQF0cREREREXEfDRIiIiIiIiIiTlIFTUREREREXEeDhIiIiIiIiIij1EATERERERFxCXVxFBERERER99EgISIiIiIiIuIkVdBERERERMR1rCpoIiIiIiIi4iQ10ERERERERFxCXRxFRERERMR91MVRREREREREnKQGmoiIiIiIiEuoi6OIiIiIiLjOuTqKoxpo4mqtr2jJwxPvx+v18Nl7s3jj5XcC5gcXCWbyK+O5qGEdUg6l8sDtY4jeH0NQcBDjn36Yeo3rYv2WKWOeZ83ydQBM++B5wsJD8Xq9rFu1gYkPP4Pff3ZcARq3bcIt4wfh8Xr55sOFfPnaZwHzuw+6ig69O+FP95OafJhXR75E4sEEh7LNP/XbNubmcbdgvB6WfvQNc1/7MmB+59u606Z3B3zp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3gXe0k6n4Eqv7PnItQdMfIe2jn6+rPDNkr/cN8aYIGA70AE4SMbn6puttdnHi+gK3GStHZA5JsR6oLG19rSFD1XQcmGt/RHIbej8atl+vyVbfMnMfxcDi7NNH5ZjvQHzM6dVy/b7WjLKn2Q26t7M/D2OUx84BKifOT8FyD6G65vZ1tk92+/f5oj7U/OcE6y11+QSJyIiIiJSIM5woA7HWGvTjTHDgAVkjNnwX2vtFmPM42QUaWZlzutsjPmZjELLyL9qnIEaaCIiIiIiIv8v1tq5wNwc08Zl+90CwzN/zogaaCIiIiIi4j7Wtb0v85U6bouIiIiIiLiEGmgiIiIiIiIuoS6OIiIiIiLiOm4fJCS/qIImIiIiIiLiEqqgiYiIiIiI61i/BgkRERERERERB6mBJiIiIiIi4hLq4igiIiIiIq6jQUJERERERETEUaqgiYiIiIiI61irQUJERERERETEQWqgiYiIiIiIuIS6OIqIiIiIiOtokBARERERERFxlBpoIiIiIiIiLqEujiIiIiIi4jrWr1EcRURERERExEGqoImIiIiIiOtY63QGzlAFTURERERExCXUQBMREREREXEJdXEUERERERHX0SAhIiIiIiIi4ihV0ERERERExHVUQRMRERERERFHqYEmIiIiIiLiEuriKCIiIiIirqPvQRMRERERERFHqYImIiIiIiKuc64OEqIGmuSJdOtzOgXXebnKEadTcJ0uO487nYIrXdPkHqdTcJ3P173kdAquNKjpSKdTcJ1j/hSnU3Cd84PKOJ2CK4XoY68UEuriKCIiIiIi4hK6lSAiIiIiIq5j7bnZxVEVNBEREREREZdQBU1ERERERFzH+p3OwBmqoImIiIiIiLiEGmgiIiIiIiIuoS6OIiIiIiLiOn4NEiIiIiIiIiJOUgVNRERERERcR8Psi4iIiIiIiKPUQBMREREREXEJdXEUERERERHXsX51cRQREREREREHqYEmIiIiIiLiEuriKCIiIiIirmOt0xk4QxU0ERERERERl1AFTUREREREXEeDhIiIiIiIiIij1EATERERERFxCXVxFBERERER1/FbdXEUERERERERB6mCJiIiIiIirmNVQRMREREREREnqYEmIiIiIiLiEuriKCIiIiIirmOt0xk4QxU0ERERERERl1AFTUREREREXEfD7IuIiIiIiIij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6/3Xs3/zLrYs+pGeo/pQtERRBk69D4BDBxN5Y3DGqKjlKodRNrI8v678xcnNEIeZ0/W3l7NHtmH2IaN39Ghr7deZw+zPsdbWzxE/EGj6T4bZDypSSQdSDtdHnjpa1bmuDnnXFfZsMrxzwt8HnWPujjq3Rgk8U6+vfdrpFFyn28V3Op2C6+w+pmtKbnqWrO10Cq70/J4P3XNnPoeZlfs6+vly8IF3Hdk3qqCdA6y13tNM3wPUz2X6m8Cbmb8/mn+ZiYiIiIjkzsluhk7SM2giIiIiIiIuoQaaiIiIiIiIS6iLo4iIiIiIuI517dNx+UsVNBEREREREZdQBU1ERERERFxHg4SIiIiIiIiIo9RAExERERERcQl1cRQREREREddRF0cRERERERFxlCpoIiIiIiLiOtbpBByiCpqIiIiIiIhLqIEmIiIiIiLiEuriKCIiIiIiruM3TmfgDFXQREREREREXEIVNBERERERcR0Nsy8iIiIiIiKOUgNNRERERETEJdTFUUREREREXEddHEVERERERMRRqqCJiIiIiIjrWKcTcIgqaCIiIiIiIi6hBpqIiIiIiIhLqIujiIiIiIi4jt84nYEzVEETERERERFxCVXQRERERETEdTTMvoiIiIiIiDhKDTQRERERERGXUBdHERERERFxHX0PmoiIiIiIiDhKDTQRERERERGXUBdHyRMlgos6nYLrHEw/4nQKrvNZ4lqnU3Cl5fPrO52C6xzzpzidgit1u/hOp1NwnXnrX3M6BddpeFFvp1NwpVh73OkU5B/yn6OdHFVBExERERERcQlV0ERERERExHX0PWgiIiIiIiLiKDXQREREREREXEJdHEVERERExHXOzSFCVEETERERERFxDVXQRERERETEdTRIiIiIiIiIiDhKDTQRERERERGXUBdHERERERFxHb9xOgNnqIImIiIiIiLiEqqgiYiIiIiI6/jP0YH2VUETERERERFxCTXQREREREREXEJdHEVERERExHXOzQ6OqqCJiIiIiIi4hipoIiIiIiLiOn6nE3CIKmgiIiIiIiIuoQaaiIiIiIiIS6iLo4iIiIiIuI6+B01EREREREQcpQqaiIiIiIi4zrlZP1MFTURERERExDXUQBMREREREXEJdXEUERERERHX0fegiYiIiIiIiKPUQBMREREREXEJdXEUERERERHX0feg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moiIiIiISIBQF0cREREREQk4GsVRREREREREHKUWNBERERERCTgaJEREREREREQcpQqaiIiIiIhIgFAXRxERERERCTheq0FCRERERERExEFqQRMRERERkYBzZbafqQVNREREREQkYKiCJiIiIiIiEiDUxVFERERERAKO9wrt5KgWNBERERERkQChFjQREREREQk4Vi1oIiIiIiIi4iRV0ERERERERAKEKmgiIiIiIhJwvA7/nA9jTGtjzBZjzHZjzIvpLO9rjNlojFlnjJljjLkms22qgiYiIiIiInKBjDFu4BPgVqAScK8xplKqsNVAbWttVWAC8HZm29UgIXJR7Lv/OqdTCDjfTCrsdAoBp0lYqNMpBKTlnninUwg41wQVcDqFgLTkeITTKQScqpU6O51CwFm3cazTKQSkz2sMdjoFuUCXwDD7dYHt1todAMaYscDtwMYzAdbaecnilwLdMtuoWtBEREREREQuXAlgT7Lpvf55GXkQmJbZRtWCJiIiIiIikooxpjfQO9mskdbakclD0lkt3WY/Y0w3oDbQOLP3VQVNREREREQCjtPfg+avjI08R8heoFSy6ZJAZOogY0xz4CWgsbX2VGbvqy6OIiIiIiIiF245cK0xpowxJgfQGZiUPMAYUwP4Amhvrd1/PhtVBU1EREREROQCWWsTgT7ADGAT8JO1doMxZogxpr0/7B0gLzDeGLPGGDMpg80lURdHEREREREJOOf7XWROstZOBaammjc42evmF7pNtaCJiIiIiIgECLWgiYiIiIhIwLE24L8HLUuoBU1ERERERCRAqIImIiIiIiISINTFUUREREREAo7X4e9Bc4pa0ERERERERAKEWtBERERERCTgXArD7GcFtaCJiIiIiIgECFXQREREREREAoS6OIqIiIiISMCxGiREREREREREnKQWNBERERERCTgaZl9EREREREQcpQqaiIiIiIhIgFAXRxERERERCTjWqoujiIiIiIiIOEgtaCIiIiIiEnC8TifgELWgiYiIiIiIBAhV0ERERERERAKEujiKiIiIiEjAsfoeNBEREREREXGSWtBERERERCTgeNWCJiIiIiIiIk5SBU1ERERERCRAqIujiIiIiIgEHGuvzC6OqqDJJcN9fS1ydXoYXC4S/pzB6Vnj08QE1biJHG26Ahbvvp2cHPU2ADlvfwB35Tpg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\n",
      "text/plain": [
       "<Figure size 1008x864 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.subplots(figsize=(14,12)) # 设置图片的大小\n",
    "sns.heatmap(corr, annot = True) # 使用热度图可视化相关系数矩阵"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYgAAAEKCAYAAAAIO8L1AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAEzpJREFUeJzt3XvQHXV9x/H3h5tWvBBLYDCAQSc6pVXRRsZLq6K2Cp0SoMXiOMoo0+gUFFvbEa0VL0WtgrbUSpsOFOgFiiiKNlWRItYLYEDkKmOKGiKURLwQsMUC3/5x9pFD3JxnE7LPnuR5v2bOnN3f2T37PTPh+bC/3d9vU1VIkrSxHYYuQJI0nQwISVIrA0KS1MqAkCS1MiAkSa0MCElSKwNCktTKgJAktTIgJEmtdhq6gIdi9913r8WLFw9dhiRtU6688srvV9XC2bbbpgNi8eLFrFq1augyJGmbkuS7Xbazi0mS1MqAkCS1MiAkSa0MCElSKwNCktTKgJAktTIgJEmtDAhJUisDQpLUapseSb01/OqfnD10CZpCV37gVUOXIA3OMwhJUisDQpLUyoCQJLUyICRJrQwISVKr3gIiyT5JLklyY5LrkxzftL8jyfeSXN28Dhnb5y1JVie5KclL+qpNkjS7Pm9zvRd4U1VdleRRwJVJLmo++1BVnTy+cZL9gaOAXwYeB3w+yZOq6r4ea5QkbUJvZxBVdVtVXdUsbwBuBBZN2GUZcG5V3VNV3wZWAwf2VZ8kabI5uQaRZDHwdODypum4JNckOSPJgqZtEXDL2G5raQmUJMuTrEqyav369T1WLUnzW+8BkeSRwMeAN1bVncBpwBOBA4DbgFNmNm3ZvX6uoWpFVS2tqqULF876zG1J0hbqNSCS7MwoHP65qj4OUFW3V9V9VXU/8Pc80I20FthnbPe9gVv7rE+StGl93sUU4HTgxqr64Fj7XmObHQ5c1yxfCByV5GFJ9gOWAFf0VZ8kabI+72J6LvBK4NokVzdtbwVenuQARt1H3wFeC1BV1yc5D7iB0R1Qx3oHkyQNp7eAqKov0X5dYeWEfU4CTuqrJklSd46kliS1MiAkSa0MCElSKwNCktTKgJAktTIgJEmtDAhJUisDQpLUyoCQJLUyICRJrQwISVIrA0KS1MqAkCS1MiAkSa0MCElSKwNCktTKgJAktTIgJEmtDAhJUisDQpLUyoCQJLUyICRJrQwISVIrA0KS1MqAkCS1MiAkSa1mDYgkuybZoVl+UpJDk+zcf2mSpCF1OYP4IvDwJIuAi4FXA2f2WZQkaXhdAiJV9RPgCOCvq+pwYP9+y5IkDa1TQCR5NvAK4N+atp36K0mSNA26BMQbgbcAF1TV9UmeAFwy205J9klySZIbk1yf5Pim/bFJLkryreZ9QdOeJKcmWZ3kmiTPeCg/TJL00MwaEFV1aVUdCny4Wb+5qt7Q4bvvBd5UVb8EPAs4Nsn+wAnAxVW1hNE1jROa7Q8GljSv5cBpm/tjJElbT5e7mJ6d5Abgxmb9aUk+Mtt+VXVbVV3VLG9o9l8ELAPOajY7CzisWV4GnF0jlwG7Jdlrc3+QJGnr6NLF9JfAS4A7AKrqG8DzNucgSRYDTwcuB/asqtua77oN2KPZbBFwy9hua5s2SdIAOg2Uq6pbNmq6r+sBkjwS+Bjwxqq6c9KmbYdu+b7lSVYlWbV+/fquZUiSNlOXgLglyXOASrJLkj+m6W6aTTOg7mPAP1fVx5vm22e6jpr3dU37WmCfsd33Bm7d+DurakVVLa2qpQsXLuxShiRpC3QJiNcBxzLq7lkLHNCsT5QkwOnAjVX1wbGPLgSObpaPBj451v6q5m6mZwE/numKkiTNvVnHM1TV9xmNgdhczwVeCVyb5Oqm7a3A+4DzkhwDrAGObD5bCRwCrAZ+wmjEtiRpILMGRJKzgOOr6kfN+gLglKp6zaT9qupLtF9XAHhRy/ZFhzMTSdLc6NLF9NSZcACoqh8yuiNJkrQd6xIQO8yMdobRSGicakOStntd/tCfAnwlyfnN+pHASf2VJEmaBl0uUp+d5ErgIEbXFI6oqht6r0ySNKiuXUXfBH44s32SfatqTW9VSZIG1+UuptcDJwK3MxpBHUYjnJ/ab2mSpCF1OYM4HnhyVd3RdzGSpOnRaaoN4Md9FyJJmi5dziBuBr6Q5N+Ae2YaN5o+Q5K0nekSEGua1y7NS5I0D3S5zfWdAEl2raq7+y9JkjQNenuinCRp2zYnT5STJG17en+inCRp29TlIvWDnigHvIGOT5STJG27enuinCRp2zbxDCLJjsArq2pLnignSdqGTTyDqKr7gGVzVIskaYp0uQbx5SQfBv4V+Nk4iKq6qreqJEmD6xIQz2ne3zXWVsALt345kqRpMds1iB2A06rqvDmqR5I0JWa7BnE/cNwc1SJJmiJdbnO9KMkfJ9knyWNnXr1XJkkaVJdrEK9p3sfHPhTwhK1fjiRpWnSZzXW/uShEkjRdujyT+lVt7VV19tYvR5I0Lbp0MT1zbPnhwIuAqwADQpK2Y126mF4/vp7kMcA/9laRJGkqdJrueyM/AZZs7UIkSdOlyzWITzG6awlGgbI/4MA5SdrOdbkGcfLY8r3Ad6tqbU/1SJKmRJcupjXA5VV1aVV9GbgjyeLZdkpyRpJ1Sa4ba3tHku8lubp5HTL22VuSrE5yU5KXbMFvkSRtRV0C4qPA/WPr9zVtszkTeGlL+4eq6oDmtRIgyf7AUcAvN/t8pHkWhSRpIF0CYqeq+unMSrO8y2w7VdUXgR90rGMZcG5V3VNV3wZWAwd23FeS1IMuAbE+yaEzK0mWAd9/CMc8Lsk1TRfUgqZtEXDL2DZrm7afk2R5klVJVq1fv/4hlCFJmqTrM6nfmmRNkjXAm4HXbuHxTgOeyOi51rcBpzTtadm2WtqoqhVVtbSqli5cuHALy5AkzabLQLn/Ap6V5JFAqmrDlh6sqm6fWU7y98Cnm9W1wD5jm+4N3Lqlx5EkPXSznkEkeU+S3arqrqrakGRBkj/fkoMl2Wts9XBg5g6nC4GjkjwsyX6MBuJdsSXHkCRtHV26mA6uqh/NrFTVD4FDJmwPQJJzgK8CT06yNskxwPuTXJvkGuAg4A+b77ye0eC7G4DPAMdW1X2b/WskSVtNl4FyOyZ5WFXdA5DkF4CHzbZTVb28pfn0CdufBJzUoR5J0hzoEhD/BFyc5B8YXTh+DXBWr1VJkgbX5SL1+5suoRc3Te+uqs/2W5YkaWhdziAAvg7szOgM4uv9lSNJmhZd7mJ6GaM7in4XeBlweZLf7bswSdKwupxB/CnwzKpaB5BkIfB54Pw+C5MkDavLba47zIRD446O+0mStmFdziA+k+SzwDnN+u8BK/srSZI0DbrcxfQnSY4Afo3RnEkrquqC3iuTJA2q011MVfVx4OM91yJJmiJeS5Akteo6DkLSHFvzrqcMXYKm0L5vv3bOjrXJM4gkFzfvfzFn1UiSpsakM4i9kjwfODTJuWz0UJ+quqrXyiRJg5oUEG8HTmD08J4PbvRZAS/sqyhJ0vA2GRBVdT5wfpI/q6p3z2FNkqQp0GUcxLuTHAo8r2n6QlV9etI+kqRtX5fJ+t4LHM/oaW83AMc3bZKk7ViX21x/Czigqu4HSHIWoym/39JnYZKkYXUdKLfb2PJj+ihEkjRdupxBvBf4epJLGN3q+jw8e5Ck7V6Xi9TnJPkC8ExGAfHmqvrvvguTJA2r62R9twEX9lyLJGmKOFmfJKmVASFJajUxIJLskOS6uSpGkjQ9JgZEM/bhG0n2naN6JElTostF6r2A65NcAdw901hVh/ZWlSRpcF0C4p29VyFJmjpdxkFcmuTxwJKq+nySRwA79l+aJGlIXSbr+33gfODvmqZFwCf6LEqSNLwut7keCzwXuBOgqr4F7DHbTknOSLJu/C6oJI9NclGSbzXvC5r2JDk1yeok1yR5xpb9HEnS1tIlIO6pqp/OrCTZidET5WZzJvDSjdpOAC6uqiXAxc06wMHAkua1HDitw/dLknrUJSAuTfJW4BeS/AbwUeBTs+1UVV8EfrBR8zLgrGb5LOCwsfaza+QyYLcke3X5AZKkfnQJiBOA9cC1wGuBlcDbtvB4ezbzOs3M7zTTVbUIuGVsu7VNmyRpIF3uYrq/eUjQ5Yy6lm6qqi5dTJsjbYdu3TBZzqgbin33dfyeJPWly11MvwX8F3Aq8GFgdZKDt/B4t890HTXv65r2tcA+Y9vtDdza9gVVtaKqllbV0oULF25hGZKk2XTpYjoFOKiqXlBVzwcOAj60hce7EDi6WT4a+ORY+6uau5meBfx4pitKkjSMLiOp11XV6rH1m3ng//w3Kck5wAuA3ZOsBU4E3gecl+QYYA1wZLP5SuAQYDXwE+DVXX+AJKkfmwyIJEc0i9cnWQmcx+i6wJHA12b74qp6+SY+elHLtsVovIUkaUpMOoP47bHl24HnN8vrgQW9VSRJmgqbDIiqsptHkuaxWa9BJNkPeD2weHx7p/uWpO1bl4vUnwBOZzR6+v5+y5EkTYsuAfG/VXVq75VIkqZKl4D4qyQnAp8D7plprKqreqtKkjS4LgHxFOCVwAt5oIupmnVJ0naqS0AcDjxhfMpvSdL2r8tUG98Aduu7EEnSdOlyBrEn8M0kX+PB1yC8zVWStmNdAuLE3quQJE2dLs+DuHQuCpEkTZcuI6k38MDDe3YBdgburqpH91mYJGlYXc4gHjW+nuQw4MDeKpIkTYUudzE9SFV9AsdASNJ2r0sX0xFjqzsAS9nE86IlSduPLncxjT8X4l7gO8CyXqqRJE2NLtcgfC6EJM1Dkx45+vYJ+1VVvbuHeiRJU2LSGcTdLW27AscAvwgYEJK0HZv0yNFTZpaTPAo4Hng1cC5wyqb2kyRtHyZeg0jyWOCPgFcAZwHPqKofzkVhkqRhTboG8QHgCGAF8JSqumvOqpIkDW7SQLk3AY8D3gbcmuTO5rUhyZ1zU54kaSiTrkFs9ihrSdL2wxCQJLUyICRJrQwISVIrA0KS1MqAkCS1MiAkSa26TPe91SX5DrABuA+4t6qWNqO2/xVYzGhK8Zc5aluShjPkGcRBVXVAVS1t1k8ALq6qJcDFzbokaSDT1MW0jNF8TzTvhw1YiyTNe0MFRAGfS3JlkuVN255VdRtA875H245JlidZlWTV+vXr56hcSZp/BrkGATy3qm5NsgdwUZJvdt2xqlYwmkCQpUuX+mxsSerJIGcQVXVr874OuAA4ELg9yV4Azfu6IWqTJI3MeUAk2bV5ABFJdgV+E7gOuBA4utnsaOCTc12bJOkBQ3Qx7QlckGTm+P9SVZ9J8jXgvCTHAGuAIweoTZLUmPOAqKqbgae1tN8BvGiu65EktZum21wlSVPEgJAktTIgJEmtDAhJUisDQpLUyoCQJLUyICRJrQwISVIrA0KS1MqAkCS1MiAkSa0MCElSKwNCktTKgJAktTIgJEmtDAhJUisDQpLUyoCQJLUyICRJrQwISVIrA0KS1MqAkCS1MiAkSa0MCElSKwNCktTKgJAktTIgJEmtDAhJUisDQpLUyoCQJLWauoBI8tIkNyVZneSEoeuRpPlqqgIiyY7A3wAHA/sDL0+y/7BVSdL8NFUBARwIrK6qm6vqp8C5wLKBa5KkeWnaAmIRcMvY+tqmTZI0x3YauoCNpKWtHrRBshxY3qzeleSm3quaP3YHvj90EdMgJx89dAl6MP9tzjix7c/kZnt8l42mLSDWAvuMre8N3Dq+QVWtAFbMZVHzRZJVVbV06DqkjflvcxjT1sX0NWBJkv2S7AIcBVw4cE2SNC9N1RlEVd2b5Djgs8COwBlVdf3AZUnSvDRVAQFQVSuBlUPXMU/Zdadp5b/NAaSqZt9KkjTvTNs1CEnSlDAg5PQmmlpJzkiyLsl1Q9cyHxkQ85zTm2jKnQm8dOgi5isDQk5voqlVVV8EfjB0HfOVASGnN5HUyoDQrNObSJqfDAjNOr2JpPnJgJDTm0hqZUDMc1V1LzAzvcmNwHlOb6JpkeQc4KvAk5OsTXLM0DXNJ46kliS18gxCktTKgJAktTIgJEmtDAhJUisDQpLUyoCQJkiyW5I/mIPjvCDJc/o+jrQ5DAhpst2AzgGRkS357+oFgAGhqeI4CGmCJDOz294EXAI8FVgA7Ay8rao+mWQx8O/N588GDgNeDLyZ0bQl3wLuqarjkiwE/hbYtznEG4HvAZcB9wHrgddX1X/Oxe+TJjEgpAmaP/6frqpfSbIT8IiqujPJ7oz+qC8BHg/cDDynqi5L8jjgK8AzgA3AfwDfaALiX4CPVNWXkuwLfLaqfinJO4C7qurkuf6N0qbsNHQB0jYkwHuSPA+4n9G06Hs2n323qi5rlg8ELq2qHwAk+SjwpOazFwP7Jz+bRPfRSR41F8VLm8uAkLp7BbAQ+NWq+r8k3wEe3nx299h2bVOoz9gBeHZV/c9441hgSFPDi9TSZBuAmf/DfwywrgmHgxh1LbW5Anh+kgVNt9TvjH32OUaTIwKQ5ICW40hTwYCQJqiqO4AvJ7kOOABYmmQVo7OJb25in+8B7wEuBz4P3AD8uPn4Dc13XJPkBuB1TfungMOTXJ3k13v7QdJm8CK11IMkj6yqu5oziAuAM6rqgqHrkjaHZxBSP96R5GrgOuDbwCcGrkfabJ5BSJJaeQYhSWplQEiSWhkQkqRWBoQkqZUBIUlqZUBIklr9P65FCBy4wLdaAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Outcome 分布，看看各类样本分布情况\n",
    "sns.countplot(train.Outcome);\n",
    "pyplot.xlabel('target');\n",
    "pyplot.ylabel('Number of occurrences');"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 将处理后的数据存入 'FE_diabetes.csv'\n",
    "train.to_csv('FE_diabetes.csv', index=False)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 对特征变量的标准化预处理"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.preprocessing import StandardScaler\n",
    "\n",
    "# 读入数据\n",
    "FE_train = pd.read_csv(\"FE_diabetes.csv\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Pregnancies</th>\n",
       "      <th>Glucose</th>\n",
       "      <th>BloodPressure</th>\n",
       "      <th>SkinThickness</th>\n",
       "      <th>Insulin</th>\n",
       "      <th>BMI</th>\n",
       "      <th>DiabetesPedigreeFunction</th>\n",
       "      <th>Age</th>\n",
       "      <th>Outcome</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>89.0</td>\n",
       "      <td>66.0</td>\n",
       "      <td>23.0</td>\n",
       "      <td>94.0</td>\n",
       "      <td>28.1</td>\n",
       "      <td>0.167</td>\n",
       "      <td>21</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0</td>\n",
       "      <td>137.0</td>\n",
       "      <td>40.0</td>\n",
       "      <td>35.0</td>\n",
       "      <td>168.0</td>\n",
       "      <td>43.1</td>\n",
       "      <td>2.288</td>\n",
       "      <td>33</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3</td>\n",
       "      <td>78.0</td>\n",
       "      <td>50.0</td>\n",
       "      <td>32.0</td>\n",
       "      <td>88.0</td>\n",
       "      <td>31.0</td>\n",
       "      <td>0.248</td>\n",
       "      <td>26</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>2</td>\n",
       "      <td>197.0</td>\n",
       "      <td>70.0</td>\n",
       "      <td>45.0</td>\n",
       "      <td>543.0</td>\n",
       "      <td>30.5</td>\n",
       "      <td>0.158</td>\n",
       "      <td>53</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1</td>\n",
       "      <td>189.0</td>\n",
       "      <td>60.0</td>\n",
       "      <td>23.0</td>\n",
       "      <td>846.0</td>\n",
       "      <td>30.1</td>\n",
       "      <td>0.398</td>\n",
       "      <td>59</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   Pregnancies  Glucose  BloodPressure  SkinThickness  Insulin   BMI  \\\n",
       "0            1     89.0           66.0           23.0     94.0  28.1   \n",
       "1            0    137.0           40.0           35.0    168.0  43.1   \n",
       "2            3     78.0           50.0           32.0     88.0  31.0   \n",
       "3            2    197.0           70.0           45.0    543.0  30.5   \n",
       "4            1    189.0           60.0           23.0    846.0  30.1   \n",
       "\n",
       "   DiabetesPedigreeFunction  Age  Outcome  \n",
       "0                     0.167   21        0  \n",
       "1                     2.288   33        1  \n",
       "2                     0.248   26        1  \n",
       "3                     0.158   53        1  \n",
       "4                     0.398   59        1  "
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Check data:\n",
    "FE_train.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 392 entries, 0 to 391\n",
      "Data columns (total 9 columns):\n",
      "Pregnancies                 392 non-null int64\n",
      "Glucose                     392 non-null float64\n",
      "BloodPressure               392 non-null float64\n",
      "SkinThickness               392 non-null float64\n",
      "Insulin                     392 non-null float64\n",
      "BMI                         392 non-null float64\n",
      "DiabetesPedigreeFunction    392 non-null float64\n",
      "Age                         392 non-null int64\n",
      "Outcome                     392 non-null int64\n",
      "dtypes: float64(6), int64(3)\n",
      "memory usage: 27.6 KB\n"
     ]
    }
   ],
   "source": [
    "FE_train.info()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": true
   },
   "source": [
    "## 数据准备"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 从原始数据中分离输入特征 X 和变量 y\n",
    "X = FE_train.drop(['Outcome'], axis = 1) \n",
    "y = FE_train['Outcome'].values\n",
    "\n",
    "#用于后续显示权重系数对应的特征\n",
    "columns = X.columns"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 训练集，测试集分离"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/Users/sddy9/anaconda3/lib/python3.6/site-packages/sklearn/cross_validation.py:41: DeprecationWarning: This module was deprecated in version 0.18 in favor of the model_selection module into which all the refactored classes and functions are moved. Also note that the interface of the new CV iterators are different from that of this module. This module will be removed in 0.20.\n",
      "  \"This module will be removed in 0.20.\", DeprecationWarning)\n"
     ]
    }
   ],
   "source": [
    "# 将数据分割成训练数据与测试数据\n",
    "from sklearn.cross_validation import train_test_split\n",
    "\n",
    "# 随机采样80%的数据作为训练样本，其余的20%作为测试样本\n",
    "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.2, random_state = 26)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 数据标准化处理"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 数据标准化\n",
    "from sklearn.preprocessing import StandardScaler\n",
    "\n",
    "# 分别初始化对特征和目标值的标准化器\n",
    "ss_X = StandardScaler()\n",
    "ss_y = StandardScaler()\n",
    "\n",
    "# 分别对训练和测试数据的特征以及目标值进行标准化处理\n",
    "X_train = ss_X.fit_transform(X_train)\n",
    "X_test = ss_X.transform(X_test)\n",
    "\n",
    "#对y做标准化不是必须\n",
    "#对y标准化的好处是不同问题的w差异不太大，同时正则参数的范围也有限\n",
    "#y_train = ss_y.fit_transform(y_train.reshape(-1, 1))\n",
    "#y_test = ss_y.transform(y_test.reshape(-1, 1))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 模型训练"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 1. Default Logistic Regression"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Logistic 回归\n",
    "# class sklearn.linear_model.LinearRegression(fit_intercept=True, normalize=False, copy_X=True, n_jobs=1)\n",
    "# class sklearn.linear_model.LogisticRegression(penalty=’l2’, dual=False, tol=0.0001, C=1.0, fit_intercept=True, \n",
    "# intercept_scaling=1, class_weight=None, random_state=None, solver=’liblinear’, max_iter=100, multi_class=’ovr’, \n",
    "# verbose=0, warm_start=False, n_jobs=1)\n",
    "\n",
    "from sklearn.linear_model import LogisticRegression\n",
    "lr= LogisticRegression()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "logloss of each fold is:  [0.50887865 0.38543254 0.53309619 0.52209295 0.55064047]\n",
      "cv logloss is: 0.5000281594342473\n"
     ]
    }
   ],
   "source": [
    "# 交叉验证用于评估模型性能和进行参数调优（模型选择）\n",
    "# 分类任务中交叉验证缺省是采用StratifiedKFold\n",
    "from sklearn.cross_validation import cross_val_score\n",
    "loss = cross_val_score(lr, X_train, y_train, cv=5, scoring='neg_log_loss')\n",
    "print('logloss of each fold is: ',-loss)\n",
    "print('cv logloss is:', -loss.mean())"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 正则化的 Logistic Regression及参数调优"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "logistic回归的需要调整超参数有：C（正则系数，一般在log域（取log后的值）均匀设置候选参数）和正则函数penalty（L2/L1） 目标函数为：J = sum(logloss(f(xi), yi)) + C* penalty\n",
    "\n",
    "在sklearn框架下，不同学习器的参数调整步骤相同： 设置候选参数集合 -- 调用GridSearchCV -- 调用fit"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.model_selection import GridSearchCV\n",
    "from sklearn.linear_model import LogisticRegression\n",
    "\n",
    "#需要调优的参数\n",
    "# 请尝试将L1正则和L2正则分开，并配合合适的优化求解算法（slover）\n",
    "#tuned_parameters = {'penalty':['l1','l2'],\n",
    "#                   'C': [0.001, 0.01, 0.1, 1, 10, 100, 1000]\n",
    "#                   }\n",
    "penaltys = ['l1','l2']\n",
    "Cs = [0.001, 0.01, 0.1, 1, 10, 100, 1000]\n",
    "tuned_parameters = dict(penalty = penaltys, C = Cs)\n",
    "\n",
    "lr_penalty = LogisticRegression()\n",
    "grid = GridSearchCV(lr_penalty, tuned_parameters, cv=5, scoring='neg_log_loss', return_train_score=True)\n",
    "lr_penalty = grid.fit(X_train,y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'mean_fit_time': array([0.00072522, 0.00067344, 0.00083542, 0.0010695 , 0.0006815 ,\n",
       "        0.00068922, 0.0008245 , 0.0006659 , 0.00065956, 0.00068083,\n",
       "        0.00087008, 0.00079412, 0.00086899, 0.00074363]),\n",
       " 'std_fit_time': array([1.95726082e-04, 3.48282461e-05, 2.08532289e-04, 3.14428946e-04,\n",
       "        1.40668788e-04, 1.22951738e-04, 1.96474003e-04, 4.83974447e-05,\n",
       "        2.38593038e-05, 5.96017074e-05, 1.83563021e-04, 1.90288164e-04,\n",
       "        1.39929357e-04, 1.91768765e-04]),\n",
       " 'mean_score_time': array([0.00092978, 0.00080762, 0.00109239, 0.00136433, 0.00075793,\n",
       "        0.00063057, 0.00071087, 0.00074701, 0.00065804, 0.00075483,\n",
       "        0.00083771, 0.00076342, 0.00074811, 0.00074258]),\n",
       " 'std_score_time': array([1.37222219e-04, 9.41938189e-05, 2.90729316e-04, 4.52705682e-04,\n",
       "        1.36101137e-04, 2.90551558e-05, 1.05252295e-04, 1.41494981e-04,\n",
       "        6.19181817e-05, 1.25123015e-04, 2.34677363e-04, 2.58414418e-04,\n",
       "        1.22488171e-04, 1.39357371e-04]),\n",
       " 'param_C': masked_array(data=[0.001, 0.001, 0.01, 0.01, 0.1, 0.1, 1, 1, 10, 10, 100,\n",
       "                    100, 1000, 1000],\n",
       "              mask=[False, False, False, False, False, False, False, False,\n",
       "                    False, False, False, False, False, False],\n",
       "        fill_value='?',\n",
       "             dtype=object),\n",
       " 'param_penalty': masked_array(data=['l1', 'l2', 'l1', 'l2', 'l1', 'l2', 'l1', 'l2', 'l1',\n",
       "                    'l2', 'l1', 'l2', 'l1', 'l2'],\n",
       "              mask=[False, False, False, False, False, False, False, False,\n",
       "                    False, False, False, False, False, False],\n",
       "        fill_value='?',\n",
       "             dtype=object),\n",
       " 'params': [{'C': 0.001, 'penalty': 'l1'},\n",
       "  {'C': 0.001, 'penalty': 'l2'},\n",
       "  {'C': 0.01, 'penalty': 'l1'},\n",
       "  {'C': 0.01, 'penalty': 'l2'},\n",
       "  {'C': 0.1, 'penalty': 'l1'},\n",
       "  {'C': 0.1, 'penalty': 'l2'},\n",
       "  {'C': 1, 'penalty': 'l1'},\n",
       "  {'C': 1, 'penalty': 'l2'},\n",
       "  {'C': 10, 'penalty': 'l1'},\n",
       "  {'C': 10, 'penalty': 'l2'},\n",
       "  {'C': 100, 'penalty': 'l1'},\n",
       "  {'C': 100, 'penalty': 'l2'},\n",
       "  {'C': 1000, 'penalty': 'l1'},\n",
       "  {'C': 1000, 'penalty': 'l2'}],\n",
       " 'split0_test_score': array([-0.69314718, -0.66342953, -0.69314718, -0.57326202, -0.53561411,\n",
       "        -0.5126871 , -0.5098741 , -0.50887865, -0.50974739, -0.50965161,\n",
       "        -0.50976948, -0.50975966, -0.50977094, -0.50977083]),\n",
       " 'split1_test_score': array([-0.69314718, -0.65236565, -0.69314718, -0.51914538, -0.42863536,\n",
       "        -0.40872613, -0.38665532, -0.38543254, -0.38332866, -0.3831577 ,\n",
       "        -0.38295533, -0.38293885, -0.38290791, -0.38291707]),\n",
       " 'split2_test_score': array([-0.69314718, -0.65828316, -0.69314718, -0.55420904, -0.51691732,\n",
       "        -0.50784778, -0.5255289 , -0.53309619, -0.54024232, -0.54139056,\n",
       "        -0.54226572, -0.54238096, -0.54244617, -0.54248191]),\n",
       " 'split3_test_score': array([-0.69314718, -0.65368632, -0.69314718, -0.53969293, -0.52928709,\n",
       "        -0.49619967, -0.51759123, -0.52209295, -0.52971001, -0.53020573,\n",
       "        -0.53112297, -0.5311695 , -0.53125335, -0.53126739]),\n",
       " 'split4_test_score': array([-0.69314718, -0.65762536, -0.69314718, -0.56637097, -0.51234168,\n",
       "        -0.5401611 , -0.54399762, -0.55064047, -0.5528199 , -0.55352579,\n",
       "        -0.55379246, -0.5538594 , -0.55389224, -0.55389328]),\n",
       " 'mean_test_score': array([-0.69314718, -0.65710353, -0.69314718, -0.55058099, -0.50451498,\n",
       "        -0.49297971, -0.49646175, -0.49971859, -0.50282881, -0.50324028,\n",
       "        -0.50363151, -0.50367149, -0.5037036 , -0.50371549]),\n",
       " 'std_test_score': array([1.11022302e-16, 3.91707895e-03, 1.11022302e-16, 1.94824535e-02,\n",
       "        3.89976492e-02, 4.46655332e-02, 5.62767969e-02, 5.89880106e-02,\n",
       "        6.16403336e-02, 6.20000758e-02, 6.23107498e-02, 6.23458793e-02,\n",
       "        6.23787510e-02, 6.23809699e-02]),\n",
       " 'rank_test_score': array([13, 12, 13, 11, 10,  1,  2,  3,  4,  5,  6,  7,  8,  9],\n",
       "       dtype=int32),\n",
       " 'split0_train_score': array([-0.69314718, -0.65177418, -0.69314718, -0.53148921, -0.46809295,\n",
       "        -0.45142632, -0.44124244, -0.44088866, -0.44062394, -0.4406205 ,\n",
       "        -0.44061742, -0.44061739, -0.44061736, -0.44061735]),\n",
       " 'split1_train_score': array([-0.69314718, -0.65827153, -0.69314718, -0.55363323, -0.50219388,\n",
       "        -0.48395365, -0.4754931 , -0.47521133, -0.47500201, -0.47499805,\n",
       "        -0.47499565, -0.4749956 , -0.47499558, -0.47499557]),\n",
       " 'split2_train_score': array([-0.69314718, -0.65408061, -0.69314718, -0.53620032, -0.46741731,\n",
       "        -0.45057753, -0.43782484, -0.43739111, -0.43700503, -0.43699916,\n",
       "        -0.43699445, -0.43699439, -0.43699434, -0.43699434]),\n",
       " 'split3_train_score': array([-0.69314718, -0.65730465, -0.69314718, -0.54261211, -0.47372613,\n",
       "        -0.45707074, -0.44494075, -0.44426022, -0.44389861, -0.44389183,\n",
       "        -0.44388748, -0.44388739, -0.44388735, -0.44388735]),\n",
       " 'split4_train_score': array([-0.69314718, -0.65456419, -0.69314718, -0.53222683, -0.469646  ,\n",
       "        -0.44939943, -0.43957379, -0.43932213, -0.43907303, -0.4390706 ,\n",
       "        -0.43906767, -0.43906765, -0.43906762, -0.43906762]),\n",
       " 'mean_train_score': array([-0.69314718, -0.65519903, -0.69314718, -0.53923234, -0.47621526,\n",
       "        -0.45848554, -0.44781498, -0.44741469, -0.44712052, -0.44711603,\n",
       "        -0.44711253, -0.44711248, -0.44711245, -0.44711245]),\n",
       " 'std_train_score': array([0.        , 0.00233484, 0.        , 0.00821017, 0.01317282,\n",
       "        0.01300425, 0.0140375 , 0.01407945, 0.01412125, 0.01412143,\n",
       "        0.01412197, 0.01412197, 0.01412198, 0.01412198])}"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# view the complete results (list of named tuples)\n",
    "grid.cv_results_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.4929797126626331\n",
      "{'C': 0.1, 'penalty': 'l2'}\n"
     ]
    }
   ],
   "source": [
    "# examine the best model\n",
    "print(-grid.best_score_)\n",
    "print(grid.best_params_)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "最佳的正则函数为：L2 正则；最佳正则参数为：C = 0.1."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# plot CV误差曲线\n",
    "test_means = grid.cv_results_[ 'mean_test_score' ]\n",
    "test_stds = grid.cv_results_[ 'std_test_score' ]\n",
    "train_means = grid.cv_results_[ 'mean_train_score' ]\n",
    "train_stds = grid.cv_results_[ 'std_train_score' ]\n",
    "\n",
    "# plot results\n",
    "n_Cs = len(Cs)\n",
    "number_penaltys = len(penaltys)\n",
    "test_scores = np.array(test_means).reshape(n_Cs,number_penaltys)\n",
    "train_scores = np.array(train_means).reshape(n_Cs,number_penaltys)\n",
    "test_stds = np.array(test_stds).reshape(n_Cs,number_penaltys)\n",
    "train_stds = np.array(train_stds).reshape(n_Cs,number_penaltys)\n",
    "\n",
    "x_axis = np.log10(Cs)\n",
    "for i, value in enumerate(penaltys):\n",
    "    #pyplot.plot(log(Cs), test_scores[i], label= 'penalty:'   + str(value))\n",
    "    pyplot.errorbar(x_axis, test_scores[:,i], yerr=test_stds[:,i], label = penaltys[i] +' Test')\n",
    "    pyplot.errorbar(x_axis, train_scores[:,i], yerr=train_stds[:,i], label = penaltys[i] +' Train')\n",
    "    \n",
    "pyplot.legend()\n",
    "pyplot.xlabel( 'log(C)' )                                                                                                      \n",
    "pyplot.ylabel( 'neg-logloss' )\n",
    "pyplot.savefig('LogisticGridSearchCV_C.png' )\n",
    "\n",
    "pyplot.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "上图给出了L1正则和L2正则下、不同正则参数C对应的模型在训练集上测试集上的正确率（score）。\n",
    "可以看出在训练集上C越大（正则越少）的模型性能越好。\n",
    "但在测试集上, 如果使用 L1 正则，则当 C=1 时性能最好；如果使用 L2 正则，则当 C=0.1 时性能最好；"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Classification report for classifier GridSearchCV(cv=5, error_score='raise',\n",
      "       estimator=LogisticRegression(C=1.0, class_weight=None, dual=False, fit_intercept=True,\n",
      "          intercept_scaling=1, max_iter=100, multi_class='ovr', n_jobs=1,\n",
      "          penalty='l2', random_state=None, solver='liblinear', tol=0.0001,\n",
      "          verbose=0, warm_start=False),\n",
      "       fit_params=None, iid=True, n_jobs=1,\n",
      "       param_grid={'penalty': ['l1', 'l2'], 'C': [0.001, 0.01, 0.1, 1, 10, 100, 1000]},\n",
      "       pre_dispatch='2*n_jobs', refit=True, return_train_score=True,\n",
      "       scoring='neg_log_loss', verbose=0):\n",
      "             precision    recall  f1-score   support\n",
      "\n",
      "          0       0.80      0.94      0.86        50\n",
      "          1       0.85      0.59      0.69        29\n",
      "\n",
      "avg / total       0.82      0.81      0.80        79\n",
      "\n",
      "\n",
      "Confusion matrix:\n",
      "[[47  3]\n",
      " [12 17]]\n"
     ]
    }
   ],
   "source": [
    "#在校验集上测试，估计模型性能\n",
    "y_predict_lr = lr_penalty.predict(X_test)\n",
    "\n",
    "from sklearn.metrics import classification_report\n",
    "from sklearn.metrics import confusion_matrix\n",
    "\n",
    "print(\"Classification report for classifier %s:\\n%s\\n\"\n",
    "      % (lr_penalty, classification_report(y_test, y_predict_lr)))\n",
    "print(\"Confusion matrix:\\n%s\" % confusion_matrix(y_test, y_predict_lr))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 2. Default SVC"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [],
   "source": [
    "#LinearSVC\n",
    "from sklearn.svm import LinearSVC\n",
    "\n",
    "SVC1 = LinearSVC().fit(X_train, y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Classification report for classifier LinearSVC(C=1.0, class_weight=None, dual=True, fit_intercept=True,\n",
      "     intercept_scaling=1, loss='squared_hinge', max_iter=1000,\n",
      "     multi_class='ovr', penalty='l2', random_state=None, tol=0.0001,\n",
      "     verbose=0):\n",
      "             precision    recall  f1-score   support\n",
      "\n",
      "          0       0.80      0.98      0.88        50\n",
      "          1       0.94      0.59      0.72        29\n",
      "\n",
      "avg / total       0.86      0.84      0.82        79\n",
      "\n",
      "\n",
      "Confusion matrix:\n",
      "[[49  1]\n",
      " [12 17]]\n"
     ]
    }
   ],
   "source": [
    "#在校验集上测试，估计模型性能\n",
    "y_predict = SVC1.predict(X_test)\n",
    "\n",
    "from sklearn.metrics import classification_report\n",
    "from sklearn.metrics import confusion_matrix\n",
    "\n",
    "print(\"Classification report for classifier %s:\\n%s\\n\"\n",
    "      % (SVC1, classification_report(y_test, y_predict)))\n",
    "print(\"Confusion matrix:\\n%s\" % confusion_matrix(y_test, y_predict))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 线性SVM正则参数调优"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "线性SVM LinearSVC的需要调整正则超参数包括C（正则系数，一般在log域（取log后的值）均匀设置候选参数）和正则函数penalty（L2/L1）\n",
    "\n",
    "采用交叉验证，网格搜索步骤与Logistic回归正则参数处理类似，在此略。\n",
    "\n",
    "这里我们用校验集（X_test、y_test）来估计模型性能"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [],
   "source": [
    "def fit_grid_point_Linear(penalty, C, X_train, y_train, X_test, y_test):\n",
    "    \n",
    "    # 在训练集是那个利用SVC训练\n",
    "    SVC2 =  LinearSVC( penalty=penalty, C = C)\n",
    "    SVC2 = SVC2.fit(X_train, y_train)\n",
    "    \n",
    "    # 在校验集上返回accuracy\n",
    "    accuracy = SVC2.score(X_test, y_test)\n",
    "    \n",
    "    print(\"accuracy: {}\".format(accuracy))\n",
    "    return accuracy"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "accuracy: 0.7974683544303798\n",
      "accuracy: 0.8354430379746836\n",
      "accuracy: 0.8354430379746836\n",
      "accuracy: 0.8354430379746836\n",
      "accuracy: 0.8354430379746836\n",
      "accuracy: 0.810126582278481\n",
      "accuracy: 0.7721518987341772\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "#需要调优的参数\n",
    "C_s = np.logspace(-3, 3, 7) #logspace(a,b,N) is [10^a, 10^(a+(b-a)/(N-1)), ..., 10^b]  \n",
    "penalty_s = ['l2']\n",
    "\n",
    "accuracy_s = []\n",
    "for i, oneC in enumerate(C_s):\n",
    "    for j, penalty in enumerate(penalty_s):\n",
    "        tmp = fit_grid_point_Linear(penalty, oneC, X_train, y_train, X_test, y_test)\n",
    "        accuracy_s.append(tmp)\n",
    "\n",
    "x_axis = np.log10(C_s)\n",
    "for j, penalty in enumerate(penalty_s):\n",
    "    pyplot.plot(x_axis, np.array(accuracy_s), 'b-')\n",
    "    \n",
    "#pyplot.legend()\n",
    "pyplot.xlabel( 'log(C)' )                                                                                                      \n",
    "pyplot.ylabel( 'accuracy' )\n",
    "pyplot.savefig('SVM_Otto.png' )\n",
    "\n",
    "pyplot.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "经过几次参数调优后，除去两个边界值 C = 0.01 和 10，参数 C 取值 0.1 和 1 可以得到较大的精度。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "下面对最优参数 C = 0.1 的性能进行测试， 看看是否可以和以上 default C = 1 得到同样好的结果。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Classification report for classifier LinearSVC(C=1.0, class_weight=None, dual=True, fit_intercept=True,\n",
      "     intercept_scaling=1, loss='squared_hinge', max_iter=1000,\n",
      "     multi_class='ovr', penalty='l2', random_state=None, tol=0.0001,\n",
      "     verbose=0):\n",
      "             precision    recall  f1-score   support\n",
      "\n",
      "          0       0.80      0.98      0.88        50\n",
      "          1       0.94      0.59      0.72        29\n",
      "\n",
      "avg / total       0.86      0.84      0.82        79\n",
      "\n",
      "\n",
      "Confusion matrix:\n",
      "[[49  1]\n",
      " [12 17]]\n"
     ]
    }
   ],
   "source": [
    "# 选取 C = 0.1 进行训练\n",
    "SVC0p1 = LinearSVC(C = 0.1).fit(X_train, y_train)\n",
    "\n",
    "#在校验集上测试，估计模型性能\n",
    "y_predict = SVC0p1.predict(X_test)\n",
    "\n",
    "print(\"Classification report for classifier %s:\\n%s\\n\"\n",
    "      % (SVC1, classification_report(y_test, y_predict)))\n",
    "print(\"Confusion matrix:\\n%s\" % confusion_matrix(y_test, y_predict))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "上述结果显示 C = 0.1 和 C = 1 的情况完全吻合，混淆矩阵一致。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 比较与 Linear SVM 与 Logistic 回归在测试集上的性能"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "** 比较上述 LinearSVM 与 Logistic 回归在测试集上的性能：**\n",
    "\n",
    "1. 从混淆矩阵来看，LinearSVM 预测结果稍好，体现在对于未患糖尿病的情况估计更准确，对于患病群体的估计，两种方法准确度相同。\n",
    "\n",
    "2. 从精度来看，LinearSVM 的 precision，recall 和 f1-score 都比 Logistic 略高。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# RBF核SVM正则参数调优\n",
    "\n",
    "RBF核是SVM最常用的核函数。 RBF核SVM 的需要调整正则超参数包括C（正则系数，一般在log域（取log后的值）均匀设置候选参数）和核函数的宽度gamma C越小，决策边界越平滑； gamma越小，决策边界越平滑。\n",
    "\n",
    "采用交叉验证，网格搜索步骤与Logistic回归正则参数处理类似，在此略。\n",
    "\n",
    "这里我们用校验集（X_val、y_val）来估计模型性能"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.svm import SVC"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [],
   "source": [
    "def fit_grid_point_RBF(C, gamma, X_train, y_train, X_val, y_val):\n",
    "    \n",
    "    # 在训练集利用SVC训练\n",
    "    SVC3 =  SVC( C = C, kernel='rbf', gamma = gamma)\n",
    "    SVC3 = SVC3.fit(X_train, y_train)\n",
    "    \n",
    "    # 在校验集上返回accuracy\n",
    "    accuracy = SVC3.score(X_val, y_val)\n",
    "    \n",
    "    print(\"accuracy: {}\".format(accuracy))\n",
    "    return accuracy"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "accuracy: 0.6329113924050633\n",
      "accuracy: 0.6329113924050633\n",
      "accuracy: 0.6329113924050633\n",
      "accuracy: 0.6329113924050633\n",
      "accuracy: 0.6329113924050633\n",
      "accuracy: 0.6329113924050633\n",
      "accuracy: 0.6329113924050633\n",
      "accuracy: 0.6329113924050633\n",
      "accuracy: 0.6329113924050633\n",
      "accuracy: 0.6329113924050633\n",
      "accuracy: 0.6835443037974683\n",
      "accuracy: 0.6329113924050633\n",
      "accuracy: 0.6329113924050633\n",
      "accuracy: 0.6329113924050633\n",
      "accuracy: 0.6329113924050633\n",
      "accuracy: 0.810126582278481\n",
      "accuracy: 0.6455696202531646\n",
      "accuracy: 0.6329113924050633\n",
      "accuracy: 0.6329113924050633\n",
      "accuracy: 0.6329113924050633\n",
      "accuracy: 0.7974683544303798\n",
      "accuracy: 0.6835443037974683\n",
      "accuracy: 0.6329113924050633\n",
      "accuracy: 0.6329113924050633\n",
      "accuracy: 0.6329113924050633\n",
      "accuracy: 0.6835443037974683\n",
      "accuracy: 0.6835443037974683\n",
      "accuracy: 0.6329113924050633\n",
      "accuracy: 0.6329113924050633\n",
      "accuracy: 0.6329113924050633\n",
      "accuracy: 0.7341772151898734\n",
      "accuracy: 0.6835443037974683\n",
      "accuracy: 0.6329113924050633\n",
      "accuracy: 0.6329113924050633\n",
      "accuracy: 0.6329113924050633\n"
     ]
    }
   ],
   "source": [
    "#需要调优的参数\n",
    "C_s = np.logspace(-3, 3, 7)# logspace(a,b,N)把10的a次方到10的b次方区间分成N份 \n",
    "gamma_s = np.logspace(-1, 3, 5)  \n",
    "\n",
    "accuracy_s = []\n",
    "for i, oneC in enumerate(C_s):\n",
    "    for j, gamma in enumerate(gamma_s):\n",
    "        tmp = fit_grid_point_RBF(oneC, gamma, X_train, y_train, X_test, y_test)\n",
    "        accuracy_s.append(tmp)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "从上述部分运行结果来看，gamma参数设置不合适（gamma越大，对应RBF核的sigma越小，决策边界更复杂，可能发生了过拟合） 所以调小gamma值"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "accuracy: 0.6329113924050633\n",
      "accuracy: 0.6329113924050633\n",
      "accuracy: 0.6329113924050633\n",
      "accuracy: 0.6329113924050633\n",
      "accuracy: 0.6329113924050633\n",
      "accuracy: 0.6329113924050633\n",
      "accuracy: 0.6329113924050633\n",
      "accuracy: 0.6329113924050633\n",
      "accuracy: 0.6329113924050633\n",
      "accuracy: 0.6329113924050633\n",
      "accuracy: 0.6329113924050633\n",
      "accuracy: 0.6835443037974683\n",
      "accuracy: 0.6329113924050633\n",
      "accuracy: 0.6329113924050633\n",
      "accuracy: 0.810126582278481\n",
      "accuracy: 0.810126582278481\n",
      "accuracy: 0.6329113924050633\n",
      "accuracy: 0.810126582278481\n",
      "accuracy: 0.810126582278481\n",
      "accuracy: 0.7974683544303798\n",
      "accuracy: 0.810126582278481\n",
      "accuracy: 0.8227848101265823\n",
      "accuracy: 0.810126582278481\n",
      "accuracy: 0.6835443037974683\n",
      "accuracy: 0.8227848101265823\n",
      "accuracy: 0.8227848101265823\n",
      "accuracy: 0.7721518987341772\n",
      "accuracy: 0.7341772151898734\n"
     ]
    }
   ],
   "source": [
    "#需要调优的参数\n",
    "C_s = np.logspace(-3, 3, 7)# logspace(a,b,N)把10的a次方到10的b次方区间分成N份 \n",
    "gamma_s = np.logspace(-4, -1, 4)  \n",
    "\n",
    "accuracy_s = []\n",
    "for i, oneC in enumerate(C_s):\n",
    "    for j, gamma in enumerate(gamma_s):\n",
    "        tmp = fit_grid_point_RBF(oneC, gamma, X_train, y_train, X_test, y_test)\n",
    "        accuracy_s.append(tmp)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "accuracy_s1 =np.array(accuracy_s).reshape(len(C_s),len(gamma_s))\n",
    "x_axis = np.log10(C_s)\n",
    "for j, gamma in enumerate(gamma_s):\n",
    "    pyplot.plot(x_axis, np.array(accuracy_s1[:,j]), label = ' Test - log(gamma)' + str(np.log10(gamma)))\n",
    "\n",
    "pyplot.legend()\n",
    "pyplot.xlabel( 'log(C)' )                                                                                                      \n",
    "pyplot.ylabel( 'accuracy' )\n",
    "pyplot.savefig('RBF_SVM_Otto.png' )\n",
    "\n",
    "pyplot.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "** 以上结果显示，最佳的参数组合为 C = 100， gamma = 0.001. **"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "** 下面对这组参数在测试集上的性能进行测试：**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Classification report for classifier SVC(C=100, cache_size=200, class_weight=None, coef0=0.0,\n",
      "  decision_function_shape='ovr', degree=3, gamma=0.001, kernel='rbf',\n",
      "  max_iter=-1, probability=False, random_state=None, shrinking=True,\n",
      "  tol=0.001, verbose=False):\n",
      "             precision    recall  f1-score   support\n",
      "\n",
      "          0       0.80      0.96      0.87        50\n",
      "          1       0.89      0.59      0.71        29\n",
      "\n",
      "avg / total       0.83      0.82      0.81        79\n",
      "\n",
      "\n",
      "Confusion matrix:\n",
      "[[48  2]\n",
      " [12 17]]\n"
     ]
    }
   ],
   "source": [
    "# 选取 C = 100， gamma = 0.001 进行训练\n",
    "SVC_RBF =  SVC( C = 100, kernel='rbf', gamma = 0.001).fit(X_train, y_train)\n",
    "\n",
    "#在校验集上测试，估计模型性能\n",
    "y_predict_RBF = SVC_RBF.predict(X_test)\n",
    "\n",
    "print(\"Classification report for classifier %s:\\n%s\\n\"\n",
    "      % (SVC_RBF, classification_report(y_test, y_predict_RBF)))\n",
    "print(\"Confusion matrix:\\n%s\" % confusion_matrix(y_test, y_predict_RBF))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "_change_revision": 0,
  "_is_fork": false,
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
